/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

#ifndef ROCKETMQ_CLIENT_PHP_PULL_RESULT_H_
#define ROCKETMQ_CLIENT_PHP_PULL_RESULT_H_

#include <rocketmq/PullResult.h>
#include <phpcpp.h>
#include "message_ext.h"
#define PULL_RESULT_CLASS_NAME   NAMESPACE_NAME"\\PullResult"

class PullResult: public Php::Base, public Php::Countable, public Php::Traversable
{
    private:
        rocketmq::PullResult result;
    public :
        ~PullResult(){ }
        PullResult(rocketmq::PullResult result);

        Php::Value getMessage(Php::Parameters &param);

        Php::Value getNextBeginOffset();

        Php::Value getMinOffset();

        Php::Value getMaxOffset();

        Php::Value getPullStatus();

        virtual long count() override;

        virtual Php::Iterator *getIterator() override;
};

void registerPullResult(Php::Namespace &rocketMQNamespace);
#endif
